package algoWing42.modelo;


public class Torpedo extends Disparo {
    /**
	 * 
	 */
	private static final long serialVersionUID = -5098035944972425271L;
	private int direcciony;
    private int contadorMovimiento;
    
    public static final int RADIO_TORPEDO = 10;
    public static final int DANIO_TORPEDO = 8;
    public static final int VELOCIDAD_VERTICAL_TORPEDO = 2;
    public static final int VELOCIDAD_HORIZONTAL_TORPEDO = -1;
    public static final int CANTIDAD_MOVIMIENTOS_HORIZONTALES = 5;

    public Torpedo(int x, int y, boolean disparadoPorJugador) {
        super(x, y, RADIO_TORPEDO, disparadoPorJugador);
        inicializarTorpedo(disparadoPorJugador);
    }

    public Torpedo(Punto posicion, boolean disparadoPorJugador) {
        super(posicion.getX(), posicion.getY(), RADIO_TORPEDO, disparadoPorJugador);
        inicializarTorpedo(disparadoPorJugador);
    }
    
    private void inicializarTorpedo(boolean fueDisparadoPorJugador) {
    	this.danio = DANIO_TORPEDO;

        if (fueDisparadoPorJugador) {
            direcciony = -1;
        } else {
            direcciony = 1;
        }
        contadorMovimiento = 1;
    }

    /**
     * Se mueve 4 lugares hacia la izquierda y luego avanza al doble 
     * de velocidad hacia arriba o abajo si es del jugador o del 
     * enemigo, respectivamente"
     */
    @Override
    protected void mover() {
        if (contadorMovimiento <= CANTIDAD_MOVIMIENTOS_HORIZONTALES) {
            this.moverEnDireccion(VELOCIDAD_HORIZONTAL_TORPEDO, 0);
        }

        if (contadorMovimiento > CANTIDAD_MOVIMIENTOS_HORIZONTALES) {
            this.moverEnDireccion(0, VELOCIDAD_VERTICAL_TORPEDO * direcciony);
        }

        this.contadorMovimiento = this.contadorMovimiento + 1;
    }  
}
